﻿/*
 * 
 */
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;

namespace DAL
{
    public abstract class DanhmucDAL:BaseDAL,IBase
    {
        #region IBase Members

        public int Count()
        {
            throw new NotImplementedException();
        }

        public object Select(string code)
        {
            throw new NotImplementedException();
        }

        public DataTable Select(Guid fKey)
        {
            throw new NotImplementedException();
        }

        public DataTable Select(object obj, int skip, int take)
        {
            throw new NotImplementedException();
        }

        public object Insert(object obj)
        {
            throw new NotImplementedException();
        }

        public object Update(object obj)
        {
            throw new NotImplementedException();
        }

        public object Delete(Guid id)
        {
            throw new NotImplementedException();
        }

        #endregion

        /// <summary>
        /// Lấy danh mục theo loại kind nhưng có show =1
        /// </summary>
        /// <param name="Kind">Chủi thông tin loại</param>
        /// <returns>! bảng theo danh mục truyền vào</returns>
        public DataTable Danhmuc_Select_By_Kind(string Kind)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind", Kind, "Temp");
        }

        /// <summary>
        /// Thêm một danh mục mới
        /// </summary>
        /// <param name="c">Một danh mục mới</param>
        /// <returns>Đúng nếu thêm thành công và sai nếu thêm thất bại</returns>
        public bool Danhmuc_Insert(DAL.Entities.Danhmuc c)
        {
            try
            {
                _sqlMapper.Insert("Danhmuc_Insert", c);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Cập nhật thông tin Danhmuc
        /// </summary>
        /// <param name="c">Thông tin Danhmuc</param>
        /// <returns>Đúng nếu sữa được không thì sai</returns>
        public bool Danhmuc_Update(DAL.Entities.Danhmuc c)
        {
            try
            {
                _sqlMapper.Update("Danhmuc_Update", c);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Xóa Catatalog--Chỉ là đổi Show thành false
        /// </summary>
        /// <param name="c">Chỉ cần Id với Show</param>
        /// <returns>Đúng nếu xóa được</returns>
        public bool Danhmuc_Delete_Update(DAL.Entities.Danhmuc c)
        {
            try
            {
                _sqlMapper.Update("Danhmuc_Delete_Update", c);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Lấy Danh mục theo loại và tên
        /// </summary>
        /// <param name="c">Chỉ cần Tên và loại</param>
        /// <returns>Trả về một table chứ danh mục có tên theo loại đã chọn</returns>
        public DataTable Danhmuc_Select_By_Kind_Ten(DAL.Entities.Danhmuc c)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind_Ten", c, "Temp");
        }

        /// <summary>
        /// Lấy hết những danh mục thuộc Kind
        /// </summary>
        /// <param name="Kind"></param>
        /// <returns></returns>
        public DataTable Danhmuc_Select_By_Kind_All(string Kind)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind_All", Kind, "Temp");
        }

        /// <summary>
        /// Xóa hẳn một danh mục nếu nó ko có liên kết
        /// </summary>
        /// <param name="Id">Id danh mục muốn xóa</param>
        /// <returns>Đúng nếu xóa đc ko là sai khi nó có liên kết con</returns>
        public bool Danhmuc_Delete_By_Id(Guid Id)
        {
            try
            {
                _sqlMapper.Delete("Danhmuc_Delete_By_Id", Id);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        /// <summary>
        /// Lấy những danh mục có cha
        /// </summary>
        /// <param name="Kind"></param>
        /// <returns></returns>
        public DataTable Danhmuc_Select_By_Kind_All_Cocha(string Kind)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind_All_Cocha", Kind, "Temp");
        }

        /// <summary>
        /// Lấy danh mục theo ID
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public DataTable Danhmuc_Select_By_Id_Parent(Guid Id)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Id_Parent", Id, "Temp");
        }

        /// <summary>
        /// Lấy danh mục theo Kind nhưng có show =1
        /// </summary>
        /// <param name="Kind"></param>
        /// <returns></returns>
        public DataTable Danhmuc_Select_By_Kind_All_Vali(string Kind)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind_All_Vali", Kind, "Temp");
        }

        /// <summary>
        /// Lấy những danh mục theo Kind nhưng có show =0
        /// </summary>
        /// <param name="Kind"></param>
        /// <returns></returns>
        public DataTable Danhmuc_Select_By_Kind_All_NotVali(string Kind)
        {
            return Mapper.QueryForDataTable("Danhmuc_Select_By_Kind_All_NotVali", Kind, "Temp");
        }
    }
}
